package com.carrental.user.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.carrental.user.dto.UserInfoDTO;
import com.carrental.user.entity.UserInfo;
import com.carrental.user.vo.UserInfoVO;

/**
 * 用户信息服务接口
 */
public interface UserInfoService extends IService<UserInfo> {

    /**
     * 根据用户ID获取用户信息
     *
     * @param userId 用户ID
     * @return 用户信息VO
     */
    UserInfoVO getUserInfoByUserId(Long userId);

    /**
     * 保存或更新用户信息
     *
     * @param userInfoDTO 用户信息DTO
     * @return 是否成功
     */
    boolean saveOrUpdateUserInfo(UserInfoDTO userInfoDTO);

    /**
     * 分页查询用户信息
     *
     * @param page     分页参数
     * @param userInfo 查询条件
     * @return 分页结果
     */
    Page<UserInfoVO> pageUserInfo(Page<UserInfo> page, UserInfo userInfo);

    /**
     * 增加用户积分
     *
     * @param userId 用户ID
     * @param points 积分
     * @return 是否成功
     */
    boolean addPoints(Long userId, Integer points);

    /**
     * 更新用户信用分
     *
     * @param userId      用户ID
     * @param creditScore 信用分
     * @return 是否成功
     */
    boolean updateCreditScore(Long userId, Integer creditScore);

    /**
     * 更新用户等级
     *
     * @param userId    用户ID
     * @param userLevel 用户等级
     * @return 是否成功
     */
    boolean updateUserLevel(Long userId, Integer userLevel);
} 